home *** CD-ROM | disk | FTP | other *** search
/ SuperView Productivity Suite 2 / SuperView Productivity Suite 2.iso / BONUS / PROGS / StackAid.lha / StackAid / IPrefsPatch.rx < prev    next >
Text File  |  1998-08-06  |  1KB  |  69 lines

  1. /*
  2.         Patch IPrefs to use 8192 bytes stack instead of 3500 bytes
  3.  
  4.         Written by Jorma Oksanen <tenu@sci.fi>
  5. */
  6.  
  7. address command
  8. call pragma('D','SYS:C')
  9.  
  10. /*      Read code into variable
  11. */
  12.  
  13. if ~open(in,'IPrefs','r') then exit
  14. code=readch(in,60000)
  15. call readch(in,1); if ~eof(in) then exit
  16. call close(in)
  17.  
  18. /*      Patch stack size
  19.  
  20. for Wb3.x
  21.  
  22. 4878 0DAC               PEA     3500.w
  23. 2F3C 8000 03F3          MOVE.L  NP_StackSize,-(SP)
  24.  
  25. or for Wb2.x
  26.  
  27. 2B7C 8000 03F3 xxxx     MOVE.L  NP_StackSize,xxxx(a5)
  28. 2B7C 0000 0BB8 xxxx     MOVE.L  #3000,xxxx(a5)
  29.  
  30. */
  31.  
  32. i=pos('4878 0DAC 2F3C 8000 03F3'x,code)
  33. if i>0 then code=overlay('2000'x,code,i+2)
  34.  
  35. else do
  36.  i=pos('2B7C 8000 03F3'x,code); if i=0 then exit
  37.  j=pos('2B7C 0000 0BB8'x,code,i); if j~=i+8 then exit
  38.  code=overlay('2000'x,code,j+4)
  39. end
  40.  
  41. /*      Patch version string
  42. */
  43.  
  44. i=pos('$VER:',code)
  45. if i>0 then do
  46.  j=pos('.',code,i); if j=0 then break
  47.  i=pos(' ',code,j); if i=0 then break
  48.  rev=substr(code,j+1,i-j-1)
  49.  code=overlay(rev+1,code,j+1)
  50. end
  51.  
  52. /*      Write out new version
  53. */
  54.  
  55. if ~open(out,'IPrefs.new','w') then exit
  56. if writech(out,code)~=length(code) then exit
  57. call close(out)
  58.  
  59. /*      Complete patch by renaming files
  60. */
  61.  
  62. 'rename IPrefs as IPrefs.orig'
  63. 'rename IPrefs.new as IPrefs'
  64.  
  65. say 'IPrefs succesfully patched.'
  66. say 'Original backed up as IPrefs.orig'
  67. say
  68.  
  69.